Simplify GTK_STATE_FLAG_FOCUSED handling in state propagation.
authorCarlos Garnacho <carlosg@gnome.org>
Sun, 23 Jan 2011 17:37:14 +0000 (18:37 +0100)
committerCarlos Garnacho <carlosg@gnome.org>
Sun, 23 Jan 2011 18:34:50 +0000 (19:34 +0100)
Just unsetting it before propagating to the children suffices.

gtk/gtkwidget.c

index 7090dc68d521d668448ccb2c67f259d21565556a..37316be729c8263658c12d3437cc99a9ea4690d6 100644 (file)
@@ -6972,14 +6972,6 @@ _gtk_widget_update_state_flags (GtkWidget     *widget,
   if (operation != STATE_CHANGE_REPLACE)
     flags &= ~(GTK_STATE_FLAG_INSENSITIVE);
 
-  /* Focused state is meant to be set only on the widget
-   * being changed itself, not on the children */
-  if ((flags & GTK_STATE_FLAG_FOCUSED) !=
-      (priv->state_flags & GTK_STATE_FLAG_FOCUSED))
-    priv->state_flags |= GTK_STATE_FLAG_FOCUSED;
-
-  flags &= ~(GTK_STATE_FLAG_FOCUSED);
-
   if (flags != 0 ||
       operation == STATE_CHANGE_REPLACE)
     {
@@ -11266,7 +11258,7 @@ gtk_widget_propagate_state (GtkWidget           *widget,
           data->parent_sensitive = gtk_widget_is_sensitive (widget);
 
           /* Do not propagate insensitive state further */
-          data->flags &= ~(GTK_STATE_FLAG_INSENSITIVE);
+          data->flags &= ~(GTK_STATE_FLAG_INSENSITIVE | GTK_STATE_FLAG_FOCUSED);
 
           if (data->use_forall)
             gtk_container_forall (GTK_CONTAINER (widget),